home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
admin
/
linuxcon.000
/
linuxcon
/
linuxconf-1.6
/
dialog
/
fldnum.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-22
|
1KB
|
80 lines
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "dialog.h"
class FIELD_INTEGER: public FIELD_STRING_BASE{
int &val;
int backup;
/*~PROTOBEG~ FIELD_INTEGER */
public:
FIELD_INTEGER (const char *_prompt, int &_val);
protected:
void dokey (WINDOW *w,
int key,
FIELD_MSG&msg);
public:
void html_draw (int nof);
void restore (void);
void save (void);
/*~PROTOEND~ FIELD_INTEGER */
};
PUBLIC FIELD_INTEGER::FIELD_INTEGER(
const char *_prompt,
int &_val)
: FIELD_STRING_BASE (_prompt, 10),val(_val)
{
backup = _val;
sprintf (buf,"%d",backup);
}
PROTECTED void FIELD_INTEGER::dokey(WINDOW *w, int key, FIELD_MSG &msg)
{
if (isdigit(key)
|| (key >= KEY_MIN && key <= KEY_MAX)
|| key < ' '
|| (x.input + x.scroll == 0 && key == '-')){
FIELD_STRING_BASE::dokey(w,key,msg);
}
}
/*
Draw the field with the prompt
*/
PUBLIC void FIELD_INTEGER::html_draw(int nof)
{
char key[100];
format_htmlkey (key,nof);
html_printf ("<tr><td>%s<td>",prompt);
html_defvar ("integer",key,buf,"size=10 maxlength=20");
html_defvarcur (key,buf);
}
PUBLIC void FIELD_INTEGER::save()
{
val = atoi(buf);
}
PUBLIC void FIELD_INTEGER::restore()
{
val = backup;
}
/*
Add a numerical field to the dialog.
*/
PUBLIC FIELD *DIALOG::newf_num(
const char *prompt,
int &val)
{
FIELD_INTEGER *s = new FIELD_INTEGER(prompt,val);
add (s);
return s;
}